home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Hot Mix 17
/
Hot Mix 17.iso
/
HM17_SGI
/
research
/
examples
/
misc
/
wexmast
/
wbitmap.pro
< prev
next >
Wrap
Text File
|
1997-07-08
|
7KB
|
168 lines
; $Id: wbitmap.pro,v 1.3 1997/01/15 04:29:15 ali Exp $
;
; Copyright (c) 1993-1997, Research Systems, Inc. All rights reserved.
; Unauthorized reproduction prohibited.
; This is the code for a simple bitmapped button. When the
; button in this example is pressed, the word 'OUCH!' is
; printed in the IDL window.
; Bitmap buttons can be used any place that regular buttons
; are used. Use bitmap buttons to add variety and personality
; to your widget applications.
; The VALUE of a bitmapped button is the bitmap
; to be displayed. Changing the VALUE of a bitmap button
; causes the new bitmap to be displayed.
; The procedure WORLDROT.PRO, available from the 'Simple Widget
; Examples' widget by selecting 'World Rotation Tool', uses bitmap
; buttons as "action" buttons.
; The procedure SLOTS.PRO, available from the 'Simple Widget
; Examples' widget by selecting 'Slot Machine Demo', uses bitmap
; buttons to display little bitmap pictures that simulate the
; wheels of a slot machine. When selected, the buttons
; don't actually do anything.
PRO wbitmap_event, event
; This procedure is the event handler for the 'wbitmap' procedure.
; When a widget is 'touched', put its User Value into the variable 'eventval':
WIDGET_CONTROL, event.id, GET_UVALUE = eventval
; This CASE statement branches based on the value of 'eventval'.
; For a more elaborate example of managing buttons that perform an
; action when pressed, see the WBUTTONS.PRO procedure.
CASE eventval OF
"LOOK":print, 'OUCH!' ;Print OUCH! in the IDL window when the button
;is pressed.
ENDCASE
END
PRO wbitmap, GROUP = GROUP
; This is the procedure that creates a bitmap button widget.
; Create the main, top-level base:
base = WIDGET_BASE(TITLE = 'Bitmap Button Example', /COLUMN, XSIZE = 300)
; Create a sub-base to hold the button widget. The button could be put
; directly into the top-level base, but we wanted to show that widget
; bases can be put inside other widget bases. Also, to make this demo
; work with both OPEN LOOK and MOTIF, we need to determine which version
; we are using and, for OPEN LOOK, make the base EXCLUSIVE to properly
; display the bitmapped button. Unless you routinely work with BOTH
; environments, you shouldn't have to the IF... THEN part the the next
; command. Just use the code for OPEN LOOK or MOTIF, depending upon
; which toolkit you use:
VERSION = WIDGET_INFO(/VERSION)
IF (VERSION.STYLE EQ 'OPEN LOOK') THEN $
holder = WIDGET_BASE(base, $
/FRAME, $
/EXCLUSIVE) $ ;If running under OPEN LOOK,
;make the base EXCLUSIVE.
ELSE $
holder = WIDGET_BASE(base, /FRAME) ;If running under MOTIF,
;DON'T make the base EXCLUSIVE.
; The bitmap for the LOOK! button was created with the procedure XBM_EDIT.
; The bitmap was saved as an "IDL array definition file" and imported into
; this file with a text editor.
; Here is the definition of the LOOK! button:
looker = [ $
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 030B, 060B, 000B, 000B, 000B, 000B],$
[000B, 000B, 033B, 066B, 000B, 000B, 000B, 000B],$
[000B, 128B, 032B, 065B, 000B, 000B, 000B, 000B],$
[000B, 128B, 032B, 065B, 000B, 000B, 000B, 000B],$
[000B, 128B, 032B, 065B, 000B, 000B, 000B, 000B],$
[000B, 128B, 039B, 079B, 000B, 000B, 000B, 000B],$
[000B, 128B, 039B, 079B, 000B, 000B, 000B, 000B],$
[000B, 128B, 039B, 079B, 000B, 000B, 000B, 000B],$
[000B, 128B, 039B, 079B, 000B, 000B, 000B, 000B],$
[000B, 128B, 039B, 079B, 000B, 000B, 000B, 000B],$
[000B, 128B, 032B, 065B, 000B, 000B, 000B, 000B],$
[000B, 128B, 032B, 065B, 000B, 000B, 000B, 000B],$
[000B, 128B, 016B, 033B, 000B, 000B, 000B, 000B],$
[000B, 000B, 015B, 030B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 128B, 000B, 032B, 000B, 000B, 000B, 000B],$
[000B, 128B, 000B, 032B, 000B, 000B, 000B, 000B],$
[000B, 128B, 000B, 016B, 000B, 000B, 000B, 000B],$
[000B, 000B, 001B, 016B, 000B, 000B, 000B, 000B],$
[000B, 000B, 001B, 008B, 000B, 000B, 000B, 000B],$
[000B, 000B, 002B, 008B, 000B, 000B, 000B, 000B],$
[000B, 000B, 002B, 006B, 000B, 000B, 000B, 000B],$
[000B, 000B, 252B, 003B, 000B, 000B, 000B, 000B],$
[000B, 000B, 248B, 001B, 000B, 000B, 000B, 000B],$
[000B, 000B, 224B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[056B, 192B, 135B, 143B, 195B, 057B, 000B, 000B],$
[056B, 224B, 207B, 159B, 195B, 057B, 000B, 000B],$
[056B, 224B, 207B, 159B, 227B, 057B, 000B, 000B],$
[056B, 224B, 206B, 157B, 243B, 056B, 000B, 000B],$
[056B, 224B, 206B, 157B, 059B, 056B, 000B, 000B],$
[056B, 224B, 206B, 157B, 031B, 056B, 000B, 000B],$
[056B, 224B, 206B, 157B, 031B, 056B, 000B, 000B],$
[056B, 224B, 206B, 157B, 027B, 056B, 000B, 000B],$
[056B, 224B, 206B, 157B, 051B, 056B, 000B, 000B],$
[056B, 224B, 207B, 157B, 227B, 000B, 000B, 000B],$
[248B, 231B, 207B, 159B, 195B, 057B, 000B, 000B],$
[248B, 231B, 207B, 159B, 195B, 057B, 000B, 000B],$
[248B, 199B, 135B, 143B, 195B, 057B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B],$
[000B, 000B, 000B, 000B, 000B, 000B, 000B, 000B]$
]
; Making the button appear is rather easy:
look = WIDGET_BUTTON(holder, $ ;The button belongs to the base 'holder'.
VALUE = looker, $ ;The button's value is the bitmap 'looker'.
UVALUE = "LOOK") ;Give the button the User Value 'LOOK'.
; Realize the widgets:
WIDGET_CONTROL, base, /REALIZE
; Hand off to the XMANAGER:
XMANAGER, "wbitmap", base, GROUP_LEADER = GROUP, /NO_BLOCK
END